package com.permissionmanager.controller;

import com.permissionmanager.common.Result;
import com.permissionmanager.entity.Notice;
import com.permissionmanager.entity.Page;
import com.permissionmanager.service.impl.NoticeServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * notice控制层
 *
 */
@Slf4j
@RestController
@RequestMapping("/api/notice")
public class NoticeController {
    @Autowired
    NoticeServiceImpl noticeService;

    // 首页查询发布的公告
    @GetMapping("/findNotice")
    public Result findNotice() {
        log.info("进入发布公告查询");
        List<Notice> notice = noticeService.findNotice(null, null, null, 1);
        log.info("查询成功");
        return Result.success(notice);
    }

    // 分页查询公告（系统功能）（pageNum、pageSize、title、username）
    @GetMapping("/findByPage")
    public Result findByPage(@RequestParam Integer pageNum,
                             @RequestParam Integer pageSize,
                             @RequestParam String username,
                             @RequestParam String title) {
        log.info("进入notice分页查询功能！");
        Page<Notice> page = noticeService.findPage(pageNum,pageSize,title,username);
        log.info("查询成功！");
        return Result.success(page);
    }

    // 新增公告（系统功能）（title、content）
    @PostMapping("/add")
    public Result add(@RequestBody Notice notice) {
        log.info("进入notice新增功能！");
        log.info("notice-->{}",notice);
        noticeService.add(notice);
        log.info("新增成功！");
        return Result.success();
    }

    // 修改公告（系统功能） （title、content、open）
    @PutMapping("/update")
    public Result update(@RequestBody Notice notice) {
        log.info("notice:{}",notice);
        log.info("进入notice修改功能！");
        log.info("notice-->{}",notice);
        noticeService.update(notice);
        log.info("修改成功！");
        return Result.success();
    }

    // 删除公告（系统功能）（id）
    @DeleteMapping("/del/{id}")
    public Result del(@PathVariable Integer id) {
        log.info("进入notice单条删除功能！");
        noticeService.del(id);
        log.info("删除成功！");
        return Result.success();
    }


}
